﻿#pragma once
#include <string>
#include <vector>
#include <iostream>
#include <stdint.h>
#include <opencv2/opencv.hpp>

#include <onnxruntime_cxx_api.h>
#include "model_struct.h"
#include "base_predictor.h"
namespace ai {

class ModelConfig;
class ONNXModelManager;


struct ONNXPackPredictor : public BasePackPredictor {
  ONNXPackPredictor(): 
    BasePackPredictor(),
    ortMemoryInfo(Ort::MemoryInfo::CreateCpu(OrtAllocatorType::OrtDeviceAllocator, OrtMemType::OrtMemTypeCPUOutput)) 
    {}


  std::vector<int64_t> input_tensor_sizes;
  std::vector<std::vector<int64_t>> input_tensor_dims;
  std::vector<std::vector<float>> output_tensor_values;
  std::vector<std::vector<int64_t>> output_tensor_dims;

  Ort::Env env = Ort::Env(OrtLoggingLevel::ORT_LOGGING_LEVEL_ERROR, "...");
  Ort::SessionOptions sessionOptions = Ort::SessionOptions();
  Ort::Session* session = nullptr;
	Ort::MemoryInfo ortMemoryInfo;
};

}   // namespace ai 
